package com.java.big_data;

import java.math.BigDecimal;
import java.math.RoundingMode;

public class BigDecimalAPI {
    public static void main(String[] args) {
        // 创建对象
        BigDecimal bigDecimal1 = new BigDecimal(0.226); // 仍可能精度丢失
        BigDecimal bigDecimal2 = new BigDecimal("0.226"); // 精度不会丢失
        
        // 常量池范围为[0,10]内的整数
        BigDecimal bigDecimal3 = BigDecimal.valueOf(10);
        BigDecimal bigDecimal4 = BigDecimal.valueOf(10);
        System.out.println(bigDecimal3 == bigDecimal4); // true
        
        BigDecimal bigDecimal5 = BigDecimal.valueOf(9.9);
        BigDecimal bigDecimal6 = BigDecimal.valueOf(9.9);
        System.out.println(bigDecimal5 == bigDecimal6); // false
        
        BigDecimal bigDecimal7 = BigDecimal.valueOf(11);
        BigDecimal bigDecimal8 = BigDecimal.valueOf(11);
        System.out.println(bigDecimal7 == bigDecimal8); // false
        
        // valueOf：转BigDecimal
        System.out.println(BigDecimal.valueOf(0.226)); // 0.226
        
        // add：两浮点数相加
        System.out.println(bigDecimal3.add(bigDecimal4)); // 20
        
        // subtract：两浮点数相减
        System.out.println(bigDecimal3.subtract(bigDecimal4)); // 0
        
        // multiply：两浮点数相乘
        System.out.println(bigDecimal3.multiply(bigDecimal4)); // 100
        
        // divide：两浮点数相除，若只存在参数1则除不尽将报错
        System.out.println(bigDecimal3.divide(bigDecimal4)); // 1
        System.out.println(bigDecimal3.divide(bigDecimal7, 3, RoundingMode.CEILING)); // 0.910
    }
}
